
module arbitre (
	clk, 
	reset, 
	FeAr_Req,
	CaAr_Req,
	WBAr_Req,
	HDAr_Req, 
	ArFe_Gnt,
	ArCa_Gnt,
	ArWB_Gnt,
	ArHD_Gnt,
	Gnt
);

input 	clk;
input 	reset;
input 	FeAr_Req;
input 	WBAr_Req;
input 	CaAr_Req;
input 	HDAr_Req;
output 	ArFe_Gnt;
output 	ArCa_Gnt;
output 	ArWB_Gnt;
output 	ArHD_Gnt;
output 	Gnt;

reg ArFe_Gnt, ArCa_Gnt, ArWB_Gnt, ArHD_Gnt, Gnt;

always @ (posedge clk or posedge reset)
if (reset) begin
	ArFe_Gnt <= 0;
 	ArCa_Gnt <= 0;
  	ArWB_Gnt <= 0;
  	ArHD_Gnt <= 0;
  	Gnt = 0;
end else if (WBAr_Req) begin
  ArFe_Gnt <= 0;
  ArCa_Gnt <= 0;
  ArWB_Gnt <= 1;
  ArHD_Gnt <= 0;
  Gnt = 1;
end else if (CaAr_Req) begin
  ArFe_Gnt <= 0;
  ArCa_Gnt <= 1;
  ArWB_Gnt <= 0;
  ArHD_Gnt <= 0;
  Gnt = 1;
end else if (FeAr_Req) begin
  ArFe_Gnt <= 1;
  ArCa_Gnt <= 0;
  ArWB_Gnt <= 0;
  ArHD_Gnt <= 0;
  Gnt = 1;
end else if (HDAr_Req) begin
  ArFe_Gnt <= 0;
  ArCa_Gnt <= 0;
  ArWB_Gnt <= 0;
  ArHD_Gnt <= 1;
  Gnt = 1;
end else begin
  ArFe_Gnt <= 0;
  ArCa_Gnt <= 0;
  ArWB_Gnt <= 0;
  ArHD_Gnt <= 0;
  Gnt = 0;	
end

endmodule
